let notices = []//注册通知的页面、组件集合

/**
 * @param {String} name 通知的名称，要唯一，建议写在专门文件中
 * @param {Object} receiver 接收的函数，接到通知后调用
 * @param {Object} observer 注册的对象，如Page或Component
 */
function add(name, receiver, observer){
	let notice = {
		name,
		receiver,
		observer
	}
	notices.push(notice)
}

/**
 * @param {String} name 通知的名称
 * @param {Object} observer 注册的对象
 */
function remove(name, observer){
	for (let i = 0; i < notices.length; i++) {
		let notice =notices[i]
		if(notice.name == name){
			if(notice.observer == observer){
				notices.splice(i,1)
				return
			}
		}
	}
}

/**
 * 通知通知中心，调用observer的receiver执行相应的业务逻辑
 * @param {String} name 通知名称
 * @param {Object} info 携带的参数
 */
function post(name,info){
	if(notices.length == 0){
		console.log("err:还没有注册通知！");
		return
	}
	for (let i = 0; i < notices.length; i++) {
		let notice = notices[i]
		if(notice.name == name){
			notice.receiver(info)
		}
	}
}

module.exports = {
	add,
	remove,
	post
}